#这个模块是为了给教材 《统计学习方法》 第二版 李航的课后习题以及其中的模型所提供测试用数据
class TreeNode:
    def __init__(self,data,leftChild=None,rightChild=None,fatherNode=None):
        self.data = data
        self.leftChild = leftChild
        self.rightChild = rightChild
        self.fatherNode = fatherNode

class ModuleTestData:
    def GetDataForKNN_01():
        dataSet = [];
        #添加标记为1的数据
        for i in range(0,5):
            for j in range(0,2):
                dataSet.append([[i,j],1])
        for i in range(7,11):
            for j in range(4,6):
                dataSet.append([[i,j],1])
        #添加标记为2的数据
        for i in range(0,4):
            for j in range(4,6):
                dataSet.append([[i,j],2])
        #添加标记为3的数据
        for i in range(0,3):
            for j in range(2,4):
                dataSet.append([[i,j],3])
        for i in range(4,7):
            for j in range(4,6):
                dataSet.append([[i,j],3])
        for i in range(11,13):
            for j in range(4,6):
                dataSet.append([[i,j],3])
        #添加标记为4的数据
        for i in range(5,13):
            for j in range(0,2):
                dataSet.append([[i,j],4])
        #添加标记为5的数据
        for i in range(8,13):
            for j in range(2,4):
                dataSet.append([[i,j],5])
        #添加标记为6的数据
        for i in range(3,8):
            for j in range(2,4):
                dataSet.append([[i,j],6])

        return dataSet

    #返回一个一维数组
    def GetArr():
        arr = [10,20,54,8,2,8,11,5,6,1,5,7,9,15,18]
        return arr

    #为平衡二叉搜索树返回一个数组
    def GetArrForTree():
        arr = [15,100,312,151,80,120,90,95,74,93,108,50,51,42]
        return arr

    #region 
    def GetInput():
        #暂时按照教材上的输入
        x1=[3,3];y1=1
        x2=[4,3];y2=1
        x3=[1,1];y3=-1
        InputList = [[x1,y1],[x2,y2],[x3,y3]]
        return InputList

    def GetInputD3():
        #自己造点数据 把x的第三个分量的正负和y对应起来，以保证数据是线性可分的
        x1=[3,3,1];y1=1
        x2=[4,3,5];y2=1
        x3=[1,1,-3];y3=-1
        x4=[5,12,-3];y4=-1
        x5=[1,1,5];y5=1
        x6=[1,20,-3];y6=-1
        InputList = [[x1,y1],[x2,y2],[x3,y3],[x4,y4],[x5,y5],[x6,y6]]
        return InputList

    def GetInputD3_2():
        #自己造点数据 构想是在三维坐标系中 分别将点放到 两个象限，
        #设置其中一个象限的y值为1，另一个象限的设置为-1，以保证数据线性可分
        x1=[3,3,1];y1=1
        x2=[4,3,5];y2=1
        x3=[1,-50,-3];y3=-1
        x4=[5,-12,-3];y4=-1
        x5=[1,1,5];y5=1
        x6=[1,-20,-3];y6=-1
        InputList = [[x1,y1],[x2,y2],[x3,y3],[x4,y4],[x5,y5],[x6,y6]]
        return InputList
    #endregion

